
#include "carte.h"

Carte * creerCarte()
{
    Carte * C = (Carte*)malloc(1 * sizeof(Carte));
    initCarte(C);
    return C;
}

void initCarte(Carte *uneCarte)
{
    uneCarte->genre = 0;
    uneCarte->nom = (char *) malloc (32 * sizeof(char));
    uneCarte->definition = (char *) malloc (128 * sizeof(char));
}

void libereCarte(Carte *uneCarte)
{
    uneCarte->genre = 0;
    free(uneCarte->nom);
    free(uneCarte->definition);
}

void setGenreCarte(Carte *uneCarte, const GenreCarte g)
{
    uneCarte->genre = g;
}
void setNomCarte(Carte *uneCarte, const char * n)
{
    strcpy(uneCarte->nom, n);
}
void setDefinitionCarte(Carte *uneCarte, const char * def)
{
    strcpy(uneCarte->definition, def);
}

GenreCarte getGenreCarte(const Carte * uneCarte)
{
    return uneCarte->genre;
}
char * getNomCarte(const Carte * uneCarte)
{
    return uneCarte->nom;
}
char * getDefinitionCarte(const Carte * uneCarte)
{
    return uneCarte->definition;
}

void copieCarte(Carte * c1, const Carte * c2)
{
    c1->genre = c2->genre;
    strcpy(c1->nom,c2->nom);
    strcpy(c1->definition, c2->definition);
}

void detruireCarte(Carte ** CC)
{
    libereCarte(*CC);
    free(*CC);
    *CC = NULL;
}

void carteTestRegression()
{
    printf("** Test De Regression : Carte **\n");

    Carte * uneCarte = creerCarte();
    Carte * copie2Carte = creerCarte();
    GenreCarte genre = creditmoins;
    char *nom = "carte magique";
    char *def = "applique la magie :D";

    assert(uneCarte->genre == 0);
    printf("* Appel a setGenreCarte...");
    setGenreCarte(uneCarte,genre);
    printf(" okay *\n");
    printf("* Appel a setNomCarte...");
    setNomCarte(uneCarte, nom);
    printf(" okay *\n");
    printf("* Appel a setDefinitionCarte...");
    setDefinitionCarte(uneCarte, def);
    printf(" okay *\n");

    copieCarte(copie2Carte,uneCarte);

    printf("Le genre de la carte est %d \n",getGenreCarte(copie2Carte));
    printf("Le nom de la carte est \"%s\" \n",getNomCarte(copie2Carte));
    printf("La definition de la carte est \"%s\" \n",getDefinitionCarte(copie2Carte));

    detruireCarte(&uneCarte);
    detruireCarte(&copie2Carte);

    printf("** Fin Test De Regression Carte : Okay **\n\n");

}
